#pragma once

#include "limbo/details/traits.hpp"
#include <cstdint>

namespace limbo::udp {

template <typename State> struct UdpContext {
  using ContextState = State;
  using LowerContext = details::lower_context_t<State>;

  uint16_t source_port;
  uint16_t dest_port;
  LowerContext *ip_context;
};

template <typename State>
inline auto *get_lower_context(UdpContext<State> &ctx) {
  return ctx.ip_context;
}

} // namespace limbo::udp
